Circuit board text recognition

ABSTRACT

Techniques and systems for recognizing characters on a circuit board are discussed herein. For example, a digital image of a character on a circuit board can be obtained. The digital image can be processed with a gradient, structural, and concavity algorithm. The processing can include identifying a gradient feature based on a stroke shape, identifying a structural feature based on a stroke trajectory, identifying a concavity feature based on a stroke relationship, and so on. The character can be classified based on the gradient feature, the structural feature, and/or the concavity feature. The classifying can be performed using a k-nearest neighbor classifier algorithm and/or a distance metric.

CROSS-REFERENCE TO RELATED APPLICATION(S)

This application is a continuation of U.S. application Ser. No.15/612,730 filed Jun. 2, 2017, entitled SYSTEMS AND METHODS FORRECOGNITION OF UNREADABLE CHARACTERS ON PRINTED CIRCUIT BOARDS, whichclaims priority to U.S. Provisional Application No. 62/344,624 filedJun. 2, 2016, entitled OPTICAL CHARACTER RECOGNITION ON PRINTED CIRCUITBOARDS, the benefits of the filing dates of which are hereby claimed andthe disclosures of which are hereby expressly incorporated by referenceherein in their entirety.

BACKGROUND Field

The present disclosure relates to systems and methods for recognition ofunreadable characters on printed circuit boards.

Description of the Related Art

In many electronics applications, a printed circuit board such as apanel of packaging substrate is utilized to manufacture multiplepackaged modules. Such a packaged module can then be installed in anelectronic device to provide desired functionality for the electronicdevice. For example, a packaged module can be configured to providewireless functionality, and such a packaged module can be installed on awireless device.

SUMMARY

In accordance with some teachings, the present disclosure relates to amethod for recognizing characters imprinted on a printed circuit board.The method includes obtaining a digital image for each of a plurality ofcharacters on the printed circuit board, and dividing each digital imageinto an array of regions. The method further includes generating a datastructure from the arrays of the digital images. The data structureincludes gradient features based on stroke shapes on small distances,structural features based on stroke trajectories on extended distances,and concavity features based on stroke relationships.

In some embodiments, the method can further include obtaining anotherimage of a character and performing a character recognition step basedon the data structure. The character recognition step can be performedwith a k-nearest neighbor classifier algorithm and a distance metric.The distance metric can include a Euclidian Distance parameter.

In some embodiments, the gradient features, the structural features, andthe concavity features can be obtained with a gradient, structural andconcavity (GSC) algorithm. The gradient features can be obtained by twodimensional convolutions of each digital image with Sobel operators. Thestructural features can be obtained by adding zero padded borders to thearray of each digital image, and seeking gradient patterns among arrayelements immediately surrounding each non-padded border array element.The concavity features can be obtained by generating a coarse pixeldensity of the array of each digital image, the coarse pixel densityincluding a threshold applied to a count of all character pixels amongthe respective array. The concavity features can be further obtained bygenerating large-stroke information for the array of each digital image,with the large-stroke information including a threshold applied to ahistogram of pixels strokes in each of horizontal pixels and verticalpixels. The concavity features can be further obtained by generatingupward, downward, left, right and hole information for the array of eachdigital image, with the upward, downward, left, right and holeinformation including rays formed to hit the character pixels to therebydetermine presence of additional character pixels or holes.

In some embodiments, the data structure can further include a characterclass block representative of recognizable characters. The recognizablecharacters can include, for example, numeric characters 0 to 9.

In some implementations, the present disclosure relates to a method forrecognizing characters imprinted on a printed circuit board. The methodincludes obtaining a digital image of a character on the printed circuitboard. The method further includes performing an optical characterrecognition process on the digital image using trained information thatincludes gradient features based on stroke shapes on small distances,structural features based on stroke trajectories on extended distances,and concavity features based on stroke relationships.

According to some implementations, the present disclosure relates to asystem for processing printed circuit boards. The system includes afirst production system configured to fabricate a plurality of printedcircuit boards, with each printed circuit board including a plurality ofcharacters imprinted thereon to provide information about the printedcircuit board. The system further includes a character recognitionsystem configured to monitor at least some of the printed circuitboards. The character recognition system includes an imaging componentconfigured to obtain a digital image of the characters on a selectedprinted circuit board, and a processor configured to perform an opticalcharacter recognition process on the digital image using trainedinformation that includes gradient features based on stroke shapes onsmall distances, structural features based on stroke trajectories onextended distances, and concavity features based on strokerelationships.

In some embodiments, the character recognition system can furtherinclude a storage component in communication with the processor andconfigured to store the trained information.

In some embodiments, the processor ca be further configured to generatea data structure for the trained information. The processor can generatethe data structure by obtaining a digital image for each of a pluralityof characters on a selected printed circuit board, dividing each digitalimage into an array of regions, and generating the data structure fromthe arrays of the digital images, the data structure including thegradient features, the structural features, and the concavity features.

In some embodiments, the system can further include a second productionsystem configured to produce individual modules from each of at leastsome of the printed circuit boards fabricated by the first productionsystem. Each printed circuit board can be implemented as a packagingsubstrate panel having an array of modules joined together, such thatthe joined modules become the individual modules upon singulation by thesecond production system. In some embodiments, each individual modulecan be configured to provide a wireless functionality.

For purposes of summarizing the disclosure, certain aspects, advantagesand novel features of the inventions have been described herein. It isto be understood that not necessarily all such advantages may beachieved in accordance with any particular embodiment of the invention.Thus, the invention may be embodied or carried out in a manner thatachieves or optimizes one advantage or group of advantages as taughtherein without necessarily achieving other advantages as may be taughtor suggested herein.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 depicts an enhanced character recognition system having one ormore features as described herein.

FIG. 2 shows that in some embodiments, the enhanced characterrecognition system of FIG. 1 can be utilized in a manufacturing systemsuch as a packaged module processing system.

FIG. 3 shows an example of an image of a printed circuit board wherecharacters are undamaged.

FIG. 4 shows an example of an image of a printed circuit board wheresome characters are damaged.

FIG. 5 shows another example of an image of a printed circuit boardwhere some characters are damaged.

FIG. 6 shows examples of damaged digit images.

FIG. 7 shows that a digit image can include an array of pixels.

FIG. 8 shows that the array of pixels can be grouped into an array ofnon-overlapping regions.

FIG. 9 depicts an example of a data structure that can be constructed toinclude various features to facilitate enhanced recognition ofcharacters.

FIG. 10 shows gradient magnitude and direction representations of anexample digit character “9.”

FIG. 11 depicts an example of gradient angle bins that can facilitategeneration of gradient features.

FIG. 12 depicts an arrangement of non-overlapping regions of an imagethat can be utilized to obtain structural features.

FIG. 13 depicts a larger data structure that includes the data structureof FIG. 9 and data associated with a number of digital images.

FIG. 14 shows a plot of results from a test of the enhanced characterrecognition system.

FIG. 15 shows an enlarged view of the plot of FIG. 14.

FIG. 16 shows a summary of statistics of the test results.

DETAILED DESCRIPTION OF SOME EMBODIMENTS

The headings provided herein, if any, are for convenience only and donot necessarily affect the scope or meaning of the claimed invention.

FIG. 1 depicts an enhanced character recognition system 100 that can beconfigured to provide one or more features as described herein. In someembodiments, such a system can include an imaging component 102 forobtaining an image of a printed circuit board (PCB). Such an imagingcomponent can include, for example, an imaging sensor and optics forforming an image of the PCB on the imaging sensor.

As shown in FIG. 1, the enhanced character recognition system 100 canfurther include a processor 104 configured to process the image obtainedfrom the imaging sensor. The processor 104 can also be configured toprovide functionalities associated with one or more features asdescribed herein.

As shown in FIG. 1, the enhanced character recognition system 100 canfurther include a storage component 106 configured to provide storagefunctionality. In some embodiments, such a storage component can providenon-volatile storage of, for example, the image, and informationassociated with the processing of the image. The storage component 106can also be configured to provide non-volatile storage of algorithms,data, lookup tables, etc. that can be utilized to facilitate operationof the enhanced character recognition system 100.

FIG. 2 shows that in some embodiments, the enhanced characterrecognition system 100 of FIG. 1 can be utilized in a manufacturingsystem such as a packaged module processing system 110. Such a packagedmodule processing system can include a PCB production system 112configured to fabricate, for example, panels with each panel having anarray of partially or fully completed modules that are joined together.Such a panel can be singulated to produce a number of individualpackaged modules. In some embodiments, such singulated packaged modulescan be substantially complete, or be processed further. Handling and/orfurther processing of the packaged modules can be achieved by a moduleproduction system 114. Among others, examples related to production ofsuch packaged modules are described in U.S. Pat. No. 9,355,444 titledSYSTEMS AND METHODS FOR PROCESSING PACKAGED RADIO-FREQUENCY MODULESIDENTIFIED AS BEING POTENTIALLY DEFECTIVE which is expresslyincorporated by reference in its entirely, and its disclosure is to beconsidered part of the specification of the present application.

As shown in FIG. 2, the packaged module processing system 110 canfurther include the enhanced character recognition system 100 of FIG. 1.In some embodiments, such an enhanced character recognition system canimprove the efficiency of the packaged module processing system 110 andtherefore improve the production yield of the packaged modules.

In some embodiments, the enhanced character recognition system 100 ofFIGS. 1 and 2 can be configured to provide one or more features asdescribed herein. For the purpose of description, it will be understoodthat a PCB can include, for example, a panel having an array of joinedmodules based on a packaging substrate such as a laminate substrate or aceramic substrate. Such modules can be any electronic modules, includingmodules associated with wireless applications.

In some embodiments, the enhanced character recognition system 100 ofFIGS. 1 and 2 can be configured to provide optical character recognitionby implementing a Gradient, Structural, Concavity (GSC) algorithm toextract features of damaged, unreadable and/or incomplete numericaldigit characters from images on printed board circuits (PCBs). By way ofexamples, grayscale color images can be acquired from a charge-coupleddevice (CCD) camera, and a dataset of 500 matrix images samples for thecharacter digits 0 to 9 can be assembled. A GSC feature extractiontechnique can be applied to obtain characteristics that will be used ina character recognition step. Experimental results show that applyingthe GSC algorithm to extract the features and using a kNN classifierwith Euclidian Distance can improve optical character recognition (OCR)detectability of damaged characters from about 95% to more than 97%.

Optical character recognition (OCR) is a technique used to convertcharacters from a digital image to a digital text. OCR algorithms aretypically based on one of two techniques.

The first technique is related to matching of matrix images, where analphabet of stored character images is used to compare with an inputimage. This pattern matching does not work well when new fonts areencountered or input character images are unreadable.

The second technique decomposes an input image to extract principalfeatures. Then, classifiers are used to compare the input image featureswith some stored image features and choose the best match.

In some manufacturing applications, one of the foregoing OCR techniques(e.g., the pattern matching technique) can be utilized. In such apattern matching technique, a vision system reads identificationcharacters on printed circuits boards (PCBs), where the charactersprovide processing information such as lot integrity and machinecontrol.

In some situations, the foregoing pattern matching technique is notrobust enough because many of the images on the PCBs present some damageon characters due to, for example, dirt and/or as a result of badprevious processes. In an example manufacturing application, actual OCRdetectability is found to be around 95%. In such a manufacturingapplication, the pattern matching process starts with a monochrome VGAimage acquisition of a portion of a PCB (e.g., upper left section of aPCB), using a camera such as a NI-1752 smart camera, with fullresolution, 640×480 pixels and maximum data transfer @60 fps using aGigE port. Assuming that the selected resolution and data transfer speedparameters meet the production rate of inspected PCBs, such a cameragenerates a grayscale output image type with a maximum characterresolution to cover the entire PCB characters of interest.

FIG. 3 shows an example of such an output image where the PCB charactersare undamaged. In FIG. 3, the output image indicated as 200 is clearlyshow characters “1314838005.”

Due to some problems with one or more previous processes in theproduction line, some PCBs can have some residual dirt or otherundesirable material over the characters, making some charactersunreadable for the pattern matching technique. FIGS. 4 and 5 showexamples of output images of PCBs where residual dirt over thecharacters are evident. In the example of FIG. 4, the output imageindicated as 202 shows some characters being sufficiently clear (e.g.,“5659” in positions 4 to 7), while other characters have differentdegrees of readability. Similarly, in the example of FIG. 5, the outputimage indicated as 204 shows some characters being sufficiently clear,while other characters have reduced readability due to a length of asmear mark at the bottom portion of the characters.

It is noted that in the examples of FIGS. 4 and 5, some or all of thedamaged characters may be recognizable with sufficient accuracy by ahuman operator. However, involvement of operators for such interventiontypically results in a lower throughput than the automatic OCR process.For example, such human operator intervention can involve manuallywriting down the information from a screen when the OCR process fails,thereby increasing the process time. Further, possible errors can arisefrom wrong reading of the characters and/or interpretation of thedamaged characters, inducing higher production costs.

Disclosed herein are examples related to systems and methods forimplementation of a character recognition technique for unreadablecharacters using Gradient, Structural and Concavity (GSC) extractionfeatures and K-Nearest Neighbor Classifier using Euclidian Distance. Todemonstrate the enhancement of character recognition efficiency,following experimental data set was utilized: 500 character images, with50 images corresponding to each numerical digit from 0 to 9. FIG. 6shows some examples of damaged digit image samples.

The foregoing example data set can be pre-processed as follows. For thepurpose of description, and as shown in FIG. 7, let l_(i) be any digitimage 220 of size (k,l) in the dataset ∀l_(i). In the example of FIG. 7,k=50 and l=30 to yield a 50×30 matrix for the digit image 220.

Such a digit image can be converted to gray-scale (e.g., if the imagesare RGB type). Then, a threshold can be applied to binarize the matrixof the digit image 220.

Following the foregoing binarization, the digit image l_(i) can be splitinto a number of non-overlapping regions. For example, a regionindicated as 224 in FIG. 7 includes 5×5 array of elements, such that thedigit image 220 includes 60 non-overlapping regions (10 along the kdirection, and 6 along the l direction).

FIG. 8 shows the digit image of FIG. 7 in terms of the non-overlappingregions 224. Each overlapping region 224 is shown to have dimensions Δkand Δl, with Δk=Δl=5 pixels in the foregoing example.

In some embodiments, a Gradient, Structural and Concavity (GSC)recognition algorithm can be utilized to extract information from animage. Such a technique can construct features of an image by applying athree-step feature extraction process. First, a gradient step can detectlocal features by analyzing a stroke shape on small distance. Second, astructural step can extract features from stroke trajectories byextending distances of gradient. Third, a concavity analysis can detectstroke relationships across the image.

FIG. 9 depicts an example data structure 230 that can be constructedbased on the foregoing three-step extraction process. For the purpose ofdescription, such a data structure can be referred to as a Total FeatureVector (TFV) constructed for each image. In such a TFV, the firstsection 231 can include gradient features associated with the firststep; and data in the first section 231 can be arranged in, for example,720 bits (10×6 regions times 12-bits per region). Similarly, the secondsection 232 can include structural features associated with the secondstep; and data in the second section 232 can be arranged in, forexample, 720 bits (10×6 regions times 12-bits per region). Similarly,the third section 233 can include concavity features associated with thethird step; and data in the third section 233 can be arranged in, forexample, 480 bits (10×6 regions times 8-bits per region). Examples ofhow the features in the three sections of the TFV can be obtained aredescribed herein in greater detail.

In some embodiments, to obtain the gradient features for the firstsection of the TFV, two dimensional convolutions in X and Y directionscan be applied to obtain the gradient features using, for example, 3×3Sobel operators on the original l_(i) binary image. Examples of such 3×3Sobel operators are as follows in Equations 1 and 2:

$\begin{matrix}{{K_{x} = \begin{bmatrix}{- 1} & 0 & 1 \\{- 2} & 0 & 2 \\{- 1} & 0 & 1\end{bmatrix}},} & (1) \\{K_{y} = {\begin{bmatrix}{- 1} & {- 2} & {- 1} \\0 & 0 & 0 \\1 & 2 & 1\end{bmatrix}.}} & (2)\end{matrix}$

In some embodiments, the gradient features can be expressed as G_(x) andG_(y) (Equations 3 and 4) that are the two dimensional convolutions inthe X and Y directions, of a 3×3 matrix M for every pixel in theoriginal l_(i) digit image matrix. An extra zero padded border is addedto l_(i) in this example.G _(x) =K _(x) *M,  (3)G _(t) =K _(y) *M,  (4)

FIG. 10 shows gradient magnitude and direction representations of anexample digit character “9,” obtained from the foregoing two dimensionalconvolutions. More particularly, an image indicated as 240 is anoriginal image of the digit character 9; an image indicated as 242 is aSobel image (magnitude) of the digit character 9; and an image indicatedas 244 is a Sobel image (angle) of the digit character 9.

Based on the foregoing gradient information, a histogram can be appliedfor each of the 60 non-overlapping regions (224 in FIG. 8) of thecomplete image grid, incrementing a respective counter for everygradient angle that falls in each region. An example of such gradientangle bins is depicted as 250 in FIG. 11, with each bin having a30-degree size. Then, a threshold can be applied, and a final 720 bitsof gradient features information can be created for the first section ofthe TFV.

In some embodiments, to obtain the structural features for the secondsection of the TFV, the following technique can be utilized. For eachpixel of the expanded l_(i) digit image with the zero padded border, aset of 12 rules can be applied using 8 pixels around the main pixel.Such an arrangement is depicted in FIG. 12 as 260.

In some embodiments, these rules can be implemented to look for specificgradient patterns form with the nearest pixels, such as horizontal lines(Pixel 0, Pixel 4), vertical lines (Pixel 2, Pixel 6), diagonals [(Pixel5, Pixel 1), (Pixel 3, Pixel 7)] and corners [(Pixel 0, Pixel 2), (Pixel2, Pixel 4), (Pixel 4, Pixel 6), (Pixel 6, Pixel 0)].

Based on the foregoing 12 rules, a threshold can be applied for each ofthe 12 rules result, for each of the 60 non-overlapping regions tobinarize the complete set. A final 720 bits of structural features canbe created for the second section of the TFV.

In some embodiments, to obtain the concavity features for the thirdsection of the TFV, the following technique can be utilized. Threefeature sections can be implemented to form the last part of the GSCrecognition algorithm.

First, a coarse pixel density can be obtained. More particularly, ahistogram can be applied to count all the character pixels at each ofthe 60 non-overlapping regions. Then, a threshold can be applied tobinarize the result. For such a process, a 60-bits new set can beincluded as the first part of the concavity features.

Second, a large-stroke information can be obtained. More particularly,similar to the first part, two histograms can be applied, one for thehorizontal and one for the vertical pixels strokes in each direction. Athreshold can be applied to binarize the result. For this part, a120-bits (2×60) new set can be included as the second part.

Third, information about upward, downward, left, right and holes can beobtained. More particularly, in this last part of the concavityfeatures, for every pixel in each of the 60 non-overlapping regions,rays can be formed to hit character pixels, borders and checked to seeif there are holes or character pixels in all directions. For this part,a 300-bits (5×60) new set can be included as the third part.

Based on the foregoing three parts of the concavity features, and asdescribed herein in reference to FIG. 9, the example TFV for the thirdsection (concavity features) has the following set of bits: 1× (10×6)+2×(10×6)+5× (10×6)=480 bits.

In some embodiments, a k-Nearest Neighbor Classifier algorithm can beutilized for a damaged character recognition step. Such an algorithm canbe suitable for recognition of damaged characters due to its simplicityand fast performance, and the absence of prior assumptions about dataset probability distributions. In such an algorithm, classificationoccurs when a majority vote among k-nearest neighbors with respect toany particular test set is given. In the example experiments describedherein, k parameter was fixed to 3.

Based on the various techniques described herein, a data structure canbe produced. For the purpose of description, such a data structure canbe referred to as a total feature matrix, and an example of such a totalfeature matrix is depicted (as 270) in FIG. 13.

In the total feature matrix 270 of FIG. 13, a digit class (0 to 9) isshown to be added at the end column of the TFV data structure 230 ofFIG. 9. Following the foregoing TFV+digit class data structure, thetotal feature matrix 270 is shown to include images of the 500 digitsamples.

With the total feature matrix 270 of FIG. 13, various configurations forenhancement to optical recognition of characters can be tested. In anexample approach, a technique commonly referred to as Euclidian Distance(Equation 5) can be selected to compute the distance metric.D _(Euclidian)=√{square root over (Σ_(i=1)^(l)(Test_(i)−Training_(i))²)}.  (5)

A first-round of experiments were conducted as follows: a kNN EuclidianDistance and a K=3 were trained and tested while varying the proportionof training-test samples. A range of 10% to 90% training and 90% to 10%test sets were analyzed. FIG. 14 shows a plot 280 of results from thisexperimental setting. FIG. 15 shows an enlarged view 282 of the 60% to90% section of the plot 280 of FIG. 14.

From the example results of FIGS. 14 and 15, one can see that theclassification stage as described herein yields promising results. ThekNN classifier shows interesting peaks of 100% recognition rate at hightraining percentage by using the GSC algorithm.

In order to assess more precisely the classification performance of theGCC+kNN technique, Monte Carlo cross-validation strategy wasimplemented. A total of 100 random data splits of 90% training and 10%test samples were analyzed. FIG. 16 shows a plot 284 of the results andselected statistics.

From the example results of FIG. 16, one can see that the implementationof the GSC algorithm and kNN classifier with Euclidian Distance shows animprovement for the readings of damaged or incomplete characters usingoptical character recognition, when compared to the pattern matchingtechnique. For example, and as described herein, the pattern matchingtechnique is assumed to have a recognition efficiency of approximately95%. As shown in the example results of FIG. 16, the GSC algorithm/kNNclassifier with Euclidian Distance technique has a recognitionefficiency of approximately 96.76%±0.405.

It is noted that various examples are described herein in the context ofrecognition of numeric characters 0 to 9. However, it will be understoodthat one or more features of the present disclosure can also be utilizedfor enhanced recognition of other characters, including but not limitedto, English alphabet characters, alphabet characters associated withnon-English languages, and other optically recognizable symbols.

The present disclosure describes various features, no single one ofwhich is solely responsible for the benefits described herein. It willbe understood that various features described herein may be combined,modified, or omitted, as would be apparent to one of ordinary skill.Other combinations and sub-combinations than those specificallydescribed herein will be apparent to one of ordinary skill, and areintended to form a part of this disclosure. Various methods aredescribed herein in connection with various flowchart steps and/orphases. It will be understood that in many cases, certain steps and/orphases may be combined together such that multiple steps and/or phasesshown in the flowcharts can be performed as a single step and/or phase.Also, certain steps and/or phases can be broken into additionalsub-components to be performed separately. In some instances, the orderof the steps and/or phases can be rearranged and certain steps and/orphases may be omitted entirely. Also, the methods described herein areto be understood to be open-ended, such that additional steps and/orphases to those shown and described herein can also be performed.

Some aspects of the systems and methods described herein canadvantageously be implemented using, for example, computer software,hardware, firmware, or any combination of computer software, hardware,and firmware. Computer software can comprise computer executable codestored in a computer readable medium (e.g., non-transitory computerreadable medium) that, when executed, performs the functions describedherein. In some embodiments, computer-executable code is executed by oneor more general purpose computer processors. A skilled artisan willappreciate, in light of this disclosure, that any feature or functionthat can be implemented using software to be executed on a generalpurpose computer can also be implemented using a different combinationof hardware, software, or firmware. For example, such a module can beimplemented completely in hardware using a combination of integratedcircuits. Alternatively or additionally, such a feature or function canbe implemented completely or partially using specialized computersdesigned to perform the particular functions described herein ratherthan by general purpose computers.

Multiple distributed computing devices can be substituted for any onecomputing device described herein. In such distributed embodiments, thefunctions of the one computing device are distributed (e.g., over anetwork) such that some functions are performed on each of thedistributed computing devices.

Some embodiments may be described with reference to equations,algorithms, and/or flowchart illustrations. These methods may beimplemented using computer program instructions executable on one ormore computers. These methods may also be implemented as computerprogram products either separately, or as a component of an apparatus orsystem. In this regard, each equation, algorithm, block, or step of aflowchart, and combinations thereof, may be implemented by hardware,firmware, and/or software including one or more computer programinstructions embodied in computer-readable program code logic. As willbe appreciated, any such computer program instructions may be loadedonto one or more computers, including without limitation a generalpurpose computer or special purpose computer, or other programmableprocessing apparatus to produce a machine, such that the computerprogram instructions which execute on the computer(s) or otherprogrammable processing device(s) implement the functions specified inthe equations, algorithms, and/or flowcharts. It will also be understoodthat each equation, algorithm, and/or block in flowchart illustrations,and combinations thereof, may be implemented by special purposehardware-based computer systems which perform the specified functions orsteps, or combinations of special purpose hardware and computer-readableprogram code logic means.

Furthermore, computer program instructions, such as embodied incomputer-readable program code logic, may also be stored in a computerreadable memory (e.g., a non-transitory computer readable medium) thatcan direct one or more computers or other programmable processingdevices to function in a particular manner, such that the instructionsstored in the computer-readable memory implement the function(s)specified in the block(s) of the flowchart(s). The computer programinstructions may also be loaded onto one or more computers or otherprogrammable computing devices to cause a series of operational steps tobe performed on the one or more computers or other programmablecomputing devices to produce a computer-implemented process such thatthe instructions which execute on the computer or other programmableprocessing apparatus provide steps for implementing the functionsspecified in the equation(s), algorithm(s), and/or block(s) of theflowchart(s).

Some or all of the methods and tasks described herein may be performedand fully automated by a computer system. The computer system may, insome cases, include multiple distinct computers or computing devices(e.g., physical servers, workstations, storage arrays, etc.) thatcommunicate and interoperate over a network to perform the describedfunctions. Each such computing device typically includes a processor (ormultiple processors) that executes program instructions or modulesstored in a memory or other non-transitory computer-readable storagemedium or device. The various functions disclosed herein may be embodiedin such program instructions, although some or all of the disclosedfunctions may alternatively be implemented in application-specificcircuitry (e.g., ASICs or FPGAs) of the computer system. Where thecomputer system includes multiple computing devices, these devices may,but need not, be co-located. The results of the disclosed methods andtasks may be persistently stored by transforming physical storagedevices, such as solid state memory chips and/or magnetic disks, into adifferent state.

Unless the context clearly requires otherwise, throughout thedescription and the claims, the words “comprise,” “comprising,” and thelike are to be construed in an inclusive sense, as opposed to anexclusive or exhaustive sense; that is to say, in the sense of“including, but not limited to.” The word “coupled”, as generally usedherein, refers to two or more elements that may be either directlyconnected, or connected by way of one or more intermediate elements.Additionally, the words “herein,” “above,” “below,” and words of similarimport, when used in this application, shall refer to this applicationas a whole and not to any particular portions of this application. Wherethe context permits, words in the above Detailed Description using thesingular or plural number may also include the plural or singular numberrespectively. The word “or” in reference to a list of two or more items,that word covers all of the following interpretations of the word: anyof the items in the list, all of the items in the list, and anycombination of the items in the list. The word “exemplary” is usedexclusively herein to mean “serving as an example, instance, orillustration.” Any implementation described herein as “exemplary” is notnecessarily to be construed as preferred or advantageous over otherimplementations.

The disclosure is not intended to be limited to the implementationsshown herein. Various modifications to the implementations described inthis disclosure may be readily apparent to those skilled in the art, andthe generic principles defined herein may be applied to otherimplementations without departing from the spirit or scope of thisdisclosure. The teachings of the invention provided herein can beapplied to other methods and systems, and are not limited to the methodsand systems described above, and elements and acts of the variousembodiments described above can be combined to provide furtherembodiments. Accordingly, the novel methods and systems described hereinmay be embodied in a variety of other forms; furthermore, variousomissions, substitutions and changes in the form of the methods andsystems described herein may be made without departing from the spiritof the disclosure. The accompanying claims and their equivalents areintended to cover such forms or modifications as would fall within thescope and spirit of the disclosure.

What is claimed is:
 1. A system for recognizing a character on a circuitboard, the system comprising: one or more processors; and memory storingexecutable instructions that, when executed by the one or moreprocessors, cause the one or more processors to perform operationsincluding obtaining a digital image of the character, processing thedigital image with a gradient, structural, and concavity algorithm, theprocessing including dividing the digital image into an array ofregions, determining a coarse pixel density of the array by countingcharacter pixels in the array, identifying one or more gradient featuresbased at least in part on a stroke shape, identifying one or morestructural features based at least in part on a stroke trajectory, andidentifying one or more concavity features based at least in part on thecoarse pixel density of the array, the operations further includingclassifying, using a k-nearest neighbor classifier algorithm and adistance metric, the character based at least in part on the one or moregradient features, the one or more structural features, and the one ormore concavity features.
 2. The system of claim 1 wherein the distancemetric includes a Euclidian distance parameter.
 3. The system of claim 1wherein the identifying the one or more gradient features includesidentifying one or more gradient features based at least in part on astroke shape with respect to a first distance.
 4. The system of claim 3wherein the identifying the one or more structural features includesidentifying one or more structural features based at least in part on astroke trajectory with respect to a second distance, the second distancebeing greater than the first distance.
 5. The system of claim 1 whereinthe identifying one or more concavity features includes identifying oneor more concavity features based at least in part on a strokerelationship across the image.
 6. The system of claim 1 wherein theidentifying the one or more gradient features includes performing twodimensional convolutions on the digital image with one or more Sobeloperators.
 7. The system of claim 1 wherein the identifying the one ormore structural features includes adding one or more zero padded bordersto the array and identifying a gradient pattern among one or more arrayelements immediately surrounding each non-padded border array element.8. The system of claim 1 wherein the identifying the one or moreconcavity features further includes generating stroke information forthe array by applying a histogram in each of horizontal pixels andvertical pixels.
 9. The system of claim 8 wherein the identifying theone or more concavity features further includes generating upward,downward, left, right, and hole information for the array by using a rayto hit pixels to determine a presence of hole or character pixels in oneor more directions.
 10. The system of claim 1 wherein the character is adamaged character that has a readability characteristic below areadability threshold.
 11. The system of claim 1 wherein identifying theone or more concavity features includes at least one of: countingcharacter pixels in individual ones of the regions to determine a pixeldensity for individual ones of the regions, determining horizontal pixelstrokes and vertical pixel strokes for individual ones of the regions,or using a ray to hit pixels in one or more directions to determine apresence of at least one of a hole pixel or a character pixel inindividuals ones of the regions.
 12. A system for recognizing acharacter on a circuit board, the system comprising: one or moreprocessors; and memory storing executable instructions that, whenexecuted by the one or more processors, cause the one or more processorsto perform operations including processing a digital image of thecharacter with a gradient, structural, and concavity algorithm, theprocessing including dividing the digital image into multiple regions,identifying one or more gradient features based at least in part on astroke shape, identifying one or more structural features based at leastin part on a stroke trajectory, and identifying one or more concavityfeatures based at least in part on a stroke relationship, the operationsfurther including identifying, using a k-nearest neighbor classifieralgorithm and a distance metric, the character based at least in part onthe one or more gradient features, the one or more structural features,and the one or more concavity features, the identifying the one or moreconcavity features including at least one of: counting character pixelsto determine a pixel density, determining horizontal pixel strokes andvertical pixel strokes, or using a ray to hit pixels in one or moredirections to determine a presence of at least one of a hole pixel or acharacter pixel.
 13. The system of claim 12 wherein the distance metricincludes a Euclidian distance parameter.
 14. The system of claim 12wherein the identifying the character includes identifying a numericalvalue of the character, the numerical value including a number between 0and
 9. 15. The system of claim 12 further comprising an imaging sensorto capture the digital image; and a production system to fabricate thecircuit board with the character imprinted thereon, the characterproviding information about the circuit board.
 16. The system of claim12 wherein each region of the multiple regions is associated withmultiple pixels.
 17. A method comprising: capturing, with an imagingsensor, a digital image of a character on a circuit board; dividing thedigital image into multiple regions; identifying, by a system thatincludes one or more processors, one or more gradient features for thedigital image based at least in part on a stroke shape; identifying, bythe system, one or more structural features for the digital image basedat least in part on a stroke trajectory; identifying, by the system, oneor more concavity features for the multiple regions of the digital imageby at least one of: counting character pixels to determine a pixeldensity, determining horizontal pixel strokes and vertical pixelstrokes, or using a ray to hit pixels in one or more directions todetermine a presence of at least one of a hole pixel or a characterpixel; and classifying, using a k-nearest neighbor classifier algorithmand a distance metric, the character based at least in part on the oneor more gradient features, the one or more structural features, and theone or more concavity features.
 18. The method of claim 17 wherein thedistance metric includes a Euclidian distance parameter.
 19. The methodof claim 17 wherein the identifying the character includes identifying anumerical value of the character, the numerical value including a numberbetween 0 and
 9. 20. The method of claim 17 wherein the character is adamaged character that has a readability characteristic below areadability threshold.